๊ณผํ์ ์ปดํจํ ์ ์ํ Conda ๋ง์คํฐํ๊ธฐ. ๋ค์ํ ์ด์ ์ฒด์ ์์ ์ฌํ ๊ฐ๋ฅํ ์ฐ๊ตฌ๋ฅผ ์ํด ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์ ๋ง๋ค๊ณ , ๊ด๋ฆฌํ๊ณ , ๊ณต์ ํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ์ธ์.
Conda ํ๊ฒฝ ๊ด๋ฆฌ: ๊ณผํ์ ์ปดํจํ ์ ์ํ ๊ฐ์ด๋
๊ณผํ์ ์ปดํจํ ๋ฐ ๋ฐ์ดํฐ ๊ณผํ ๋ถ์ผ์์ ์์กด์ฑ ๊ด๋ฆฌ ๋ฐ ์ฌํ์ฑ ๋ณด์ฅ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. Conda๋ ์คํ ์์ค ํจํค์ง, ์์กด์ฑ ๋ฐ ํ๊ฒฝ ๊ด๋ฆฌ ์์คํ ์ผ๋ก ํน์ ํ๋ก์ ํธ์ ๋ง์ถ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์ ๋ง๋๋ ๋ฐ ํ์์ ์ธ ๋๊ตฌ๊ฐ ๋์์ต๋๋ค. ์ด ํฌ๊ด์ ์ธ ๊ฐ์ด๋๋ Conda์ ๊ธฐ๋ฅ, ์ด์ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ดํด๋ณด๊ณ ์ํฌํ๋ก๋ฅผ ๊ฐ์ํํ๊ณ ์ฐ๊ตฌ ๋ ธ๋ ฅ ๋ด์์ ํ์ ์ ์ด์งํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ๋ค์ํ ์ง๋ฆฌ์ ์์น์ ๊ณผํ ๋ถ์ผ์ ์ ์ฉํ ์ ์๋ ๋ค์ํ ์๋๋ฆฌ์ค๋ฅผ ๋ค๋ฃฐ ๊ฒ์ ๋๋ค.
Conda๋ ๋ฌด์์ ๋๊น?
Conda๋ pip์ ๊ฐ์ ๋จ์ํ ํจํค์ง ๊ด๋ฆฌ์ ๊ทธ ์ด์์ ๋๋ค. ํ๊ฒฝ ๊ด๋ฆฌ์์ ๋๋ค. ์ฆ, ๊ฐ๊ธฐ ๋ค๋ฅธ Python ๋ฒ์ , ์ค์น๋ ํจํค์ง, ์ฌ์ง์ด ์ด์ ์ฒด์ ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ ๊ฒฉ๋ฆฌ๋ ๊ณต๊ฐ์ ๋ง๋ค ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฉ๋ฆฌ๋ ๋์ผํ ํจํค์ง์ ๋ค๋ฅธ ๋ฒ์ ์ด๋ ํธํ๋์ง ์๋ ์์กด์ฑ์ด ํ์ํ ํ๋ก์ ํธ ๊ฐ์ ์ถฉ๋์ ๋ฐฉ์งํฉ๋๋ค. ์ปดํจํฐ์ ์ฌ๋ฌ ๊ฐ์ ์๋๋ฐ์ค๊ฐ ์๊ณ ๊ฐ ์๋๋ฐ์ค์ ํน์ ์์ ์ ํ์ํ ๊ณ ์ ํ ๋๊ตฌ ์ธํธ๊ฐ ์๋ค๊ณ ์๊ฐํ์ญ์์ค.
Conda๋ Anaconda์ Miniconda์ ๋ ๊ฐ์ง ์ฃผ์ ๋ฐฐํฌํ์ผ๋ก ์กด์ฌํฉ๋๋ค. Anaconda์๋ ๊ด๋ฒ์ํ ์ฌ์ ์ค์น๋ ํจํค์ง ์ปฌ๋ ์ ์ด ํฌํจ๋์ด ์์ด ํฌ๊ด์ ์ธ ๊ณผํ์ ์ปดํจํ ํ๊ฒฝ์ด ์ฆ์ ํ์ํ ์ฌ์ฉ์์๊ฒ ์ ํฉํฉ๋๋ค. ๋ฐ๋ฉด Miniconda๋ Conda ๋ฐ ํต์ฌ ์์กด์ฑ์ ์ต์ ์ค์น๋ฅผ ์ ๊ณตํ๋ฏ๋ก ์ฒ์๋ถํฐ ํ๊ฒฝ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. Miniconda๋ ์ผ๋ฐ์ ์ผ๋ก ์๋ จ๋ ์ฌ์ฉ์๋ ๋ ๊ฐ๊ฒฐํ ์ ๊ทผ ๋ฐฉ์์ ์ ํธํ๋ ์ฌ์ฉ์์๊ฒ ๊ถ์ฅ๋ฉ๋๋ค.
๊ณผํ์ ์ปดํจํ ์ Conda๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
Conda๋ ๊ณผํ์ ์ปดํจํ ์ ๋ํ ๋ช ๊ฐ์ง ๊ฐ๋ ฅํ ์ด์ ์ ์ ๊ณตํฉ๋๋ค.
- ์์กด์ฑ ๊ด๋ฆฌ: Conda๋ ๋ณต์กํ ์์กด์ฑ ์ฒด์ธ์ ํจ๊ณผ์ ์ผ๋ก ํด๊ฒฐํ์ฌ ํ์ํ ๋ชจ๋ ํจํค์ง์ ํด๋น ์์กด์ฑ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ค์น๋๋๋ก ํฉ๋๋ค. ์ด๋ ๊ณผํ ํ๋ก์ ํธ, ํนํ NumPy, SciPy, scikit-learn, TensorFlow ๋ฐ PyTorch์ ๊ฐ์ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กดํ๋ ํ๋ก์ ํธ๋ฅผ ๊ดด๋กญํ ์ ์๋ ๋์ฐํ "์์กด์ฑ ์ง์ฅ"์ ์ ๊ฑฐํฉ๋๋ค. ๋ ์ผ์์ ์ํ๋๋ ์๋ฌผ์ ๋ณดํ ํ๋ก์ ํธ์์ ์ ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๊ธฐ ์ํด ํน์ ๋ฒ์ ์ Biopython์ด ํ์ํ๋ค๊ณ ์์ํด ๋ณด์ญ์์ค. Conda๋ฅผ ์ฌ์ฉํ๋ฉด ๊ธฐ๋ณธ ์ด์ ์ฒด์ ๋๋ ๊ธฐํ ์ค์น๋ ํจํค์ง์ ๊ด๊ณ์์ด ์ด ํน์ ๋ฒ์ ์ ๋ณด์ฅํ๋ ํ๊ฒฝ์ ๋ง๋ค ์ ์์ต๋๋ค.
- ํ๊ฒฝ ๊ฒฉ๋ฆฌ: Conda๋ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์ ๋ง๋ค์ด ๋์ผํ ํจํค์ง์ ๋ค๋ฅธ ๋ฒ์ ์ด ํ์ํ ํ๋ก์ ํธ ๊ฐ์ ์ถฉ๋์ ๋ฐฉ์งํฉ๋๋ค. ์ด๋ ์ฐ๊ตฌ์ ๋ฌด๊ฒฐ์ฑ๊ณผ ์ฌํ์ฑ์ ์ ์งํ๋ ๋ฐ ์ค์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํธ์ฃผ์์ ์ํ๋๋ ๊ธฐํ ๋ชจ๋ธ๋ง ํ๋ก์ ํธ์์๋ ๋ ๊ฑฐ์ ๋ฐ์ดํฐ์์ ํธํ์ฑ์ ์ํด ์ด์ ๋ฒ์ ์ netCDF ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ ์ ์์ต๋๋ค. Conda๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ ํ๋ก์ ํธ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ์ต์ ๋ฒ์ ์ด ํ์ํ ์ ์๋ ์ ์ฉ ํ๊ฒฝ์ ๋ง๋ค ์ ์์ต๋๋ค.
- ํ๋ซํผ ๊ฐ ํธํ์ฑ: Conda๋ Windows, macOS ๋ฐ Linux๋ฅผ ์ง์ํ๋ฏ๋ก ์ด์ ์ฒด์ ์ ๊ด๊ณ์์ด ํ๋ ฅ์์ ํ๊ฒฝ ๋ฐ ํ๋ก์ ํธ๋ฅผ ๊ณต์ ํ ์ ์์ต๋๋ค. ์ด๋ ํ ๊ตฌ์ฑ์์ด ๋ค๋ฅธ ํ๋ซํผ์ ์ฌ์ฉํ ์ ์๋ ๊ตญ์ ์ฐ๊ตฌ ํ๋ ฅ์ ํนํ ์ค์ํฉ๋๋ค. ๋ฏธ๊ตญ, ์ ๋ฝ ๋ฐ ์์์ ์ ์ญ์ ๋ถ์ฐ๋ ์ฐ๊ตฌํ์ Conda ํ๊ฒฝ ์ฌ์์ ์ฝ๊ฒ ๊ณต์ ํ์ฌ ๋ชจ๋ ์ฌ๋์ด ๋์ผํ ์ํํธ์จ์ด ์คํ์ผ๋ก ์์ ํ ์ ์๋๋ก ํ ์ ์์ต๋๋ค.
- ์ฌํ์ฑ: Conda ํ๊ฒฝ์ ์ฝ๊ฒ ๋ณต์ ํ ์ ์์ผ๋ฏ๋ก ๋ค๋ฅธ ์ฌ๋์ด ์ฐ๊ตฌ๋ฅผ ์ฌํํ ์ ์์ต๋๋ค. ์ด๋ ๊ณผํ์ ๊ฒ์ฆ ๋ฐ ํ์ ์ ํ์์ ์ ๋๋ค. ํ๊ฒฝ์ YAML ํ์ผ๋ก ๋ด๋ณด๋ด๋ฉด ์ค์น๋ ๋ชจ๋ ํจํค์ง์ ๋ํ ์๋ฒฝํ ์ฌ์์ ์ ๊ณตํ์ฌ ๋ค๋ฅธ ์ฌ๋์ด ์์ ์ ์์คํ ์์ ์ ํํ ๋์ผํ ํ๊ฒฝ์ ๋ค์ ๋ง๋ค ์ ์์ต๋๋ค. ์ด๋ ์ฐ๊ตฌ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ํ๊ณ ๋ค๋ฅธ ์ฌ๋์ด ์์ ์ ์ฐ๊ตฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณต์ ํ ์ ์๋๋ก ํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
- ์ธ์ด ๋ถ๊ฐ์ง๋ก ์ : ์ฃผ๋ก Python๊ณผ ํจ๊ป ์ฌ์ฉ๋์ง๋ง Conda๋ R, Java ๋ฐ C/C++์ ๊ฐ์ ๋ค๋ฅธ ์ธ์ด์ ๋ํ ์์กด์ฑ์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ด๋ฒ์ํ ๊ณผํ์ ์ปดํจํ ์์ ์ ์ ์ฉํ ๋๊ตฌ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ๋ฃ ๊ณผํ ํ๋ก์ ํธ์์๋ ๋ฐ์ดํฐ ๋ถ์์ Python์ ์ฌ์ฉํ ์ ์์ง๋ง ์๋ฎฌ๋ ์ด์ ์ ์ํด ์ปดํ์ผ๋ C++ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ ์ ์์ต๋๋ค. Conda๋ Python ํจํค์ง์ ํ์ํ C++ ์ปดํ์ผ๋ฌ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ชจ๋ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
Conda ์์ํ๊ธฐ
์ค์น
์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ Anaconda ๋๋ Miniconda๋ฅผ ์ค์นํ๋ ๊ฒ์ ๋๋ค. ๋ ์์ ๊ณต๊ฐ๊ณผ ํ๊ฒฝ์ ๋ํ ๋ ๋ง์ ์ ์ด๋ฅผ ์ํด Miniconda๋ฅผ ๊ถ์ฅํฉ๋๋ค. ๊ณต์ Conda ์น์ฌ์ดํธ(conda.io)์์ ์ด์ ์ฒด์ ์ ์ ํฉํ ์ค์น ํ๋ก๊ทธ๋จ์ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค. ํ๋ซํผ์ ๋ง๋ ์ค์น ์ง์นจ์ ๋ฐ๋ฅด์ญ์์ค. ํฐ๋ฏธ๋์์ `conda` ๋ช ๋ น์ ์ก์ธ์คํ ์ ์๋๋ก Conda๋ฅผ ์์คํ ์ PATH ํ๊ฒฝ ๋ณ์์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
๊ธฐ๋ณธ ๋ช ๋ น
๋ค์์ ๋ช ๊ฐ์ง ํ์ Conda ๋ช ๋ น์ ๋๋ค.
- ํ๊ฒฝ ๋ง๋ค๊ธฐ: `conda create --name myenv python=3.9` ("myenv"๋ผ๋ ํ๊ฒฝ์ Python 3.9๋ก ๋ง๋ญ๋๋ค.)
- ํ๊ฒฝ ํ์ฑํ: `conda activate myenv` ("myenv" ํ๊ฒฝ์ ํ์ฑํํฉ๋๋ค. ํฐ๋ฏธ๋ ํ๋กฌํํธ๊ฐ ๋ณ๊ฒฝ๋์ด ํ์ฑ ํ๊ฒฝ์ ๋ํ๋ ๋๋ค.)
- ํ๊ฒฝ ๋นํ์ฑํ: `conda deactivate` (ํ์ฌ ํ๊ฒฝ์ ๋นํ์ฑํํฉ๋๋ค.)
- ํ๊ฒฝ ๋์ด: `conda env list` (์์คํ ์ ๋ชจ๋ Conda ํ๊ฒฝ์ ๋์ดํฉ๋๋ค.)
- ํจํค์ง ์ค์น: `conda install numpy pandas matplotlib` (ํ์ฑ ํ๊ฒฝ์ NumPy, Pandas ๋ฐ Matplotlib๋ฅผ ์ค์นํฉ๋๋ค.)
- ์ค์น๋ ํจํค์ง ๋์ด: `conda list` (ํ์ฑ ํ๊ฒฝ์ ์ค์น๋ ๋ชจ๋ ํจํค์ง๋ฅผ ๋์ดํฉ๋๋ค.)
- ํ๊ฒฝ ๋ด๋ณด๋ด๊ธฐ: `conda env export > environment.yml` (ํ์ฌ ํ๊ฒฝ์ "environment.yml"์ด๋ผ๋ YAML ํ์ผ๋ก ๋ด๋ณด๋ ๋๋ค.)
- YAML ํ์ผ์์ ํ๊ฒฝ ๋ง๋ค๊ธฐ: `conda env create -f environment.yml` ("environment.yml"์ ์ฌ์์ ๋ฐ๋ผ ์ ํ๊ฒฝ์ ๋ง๋ญ๋๋ค.)
- ํ๊ฒฝ ์ ๊ฑฐ: `conda env remove --name myenv` ("myenv" ํ๊ฒฝ์ ์ ๊ฑฐํฉ๋๋ค.)
ํ๊ฒฝ ๋ง๋ค๊ธฐ ๋ฐ ๊ด๋ฆฌ
์ ํ๊ฒฝ ๋ง๋ค๊ธฐ
`conda create` ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ Conda ํ๊ฒฝ์ ๋ง๋ญ๋๋ค. ํ๊ฒฝ์ ์ด๋ฆ๊ณผ ์ฌ์ฉํ Python ๋ฒ์ ์ ์ง์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด Python 3.8๋ก "data_analysis"๋ผ๋ ํ๊ฒฝ์ ๋ง๋ค๋ ค๋ฉด ๋ค์์ ์คํํฉ๋๋ค.
conda create --name data_analysis python=3.8
ํ๊ฒฝ์ ๋ง๋ค ๋ ์ค์นํ ํจํค์ง๋ฅผ ์ง์ ํ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด NumPy, Pandas ๋ฐ scikit-learn์ผ๋ก ํ๊ฒฝ์ ๋ง๋ค๋ ค๋ฉด:
conda create --name data_analysis python=3.8 numpy pandas scikit-learn
ํ๊ฒฝ ํ์ฑํ ๋ฐ ๋นํ์ฑํ
ํ๊ฒฝ์ด ์์ฑ๋๋ฉด ์ฌ์ฉ์ ์์ํ๋ ค๋ฉด ํ์ฑํํด์ผ ํฉ๋๋ค. ํ๊ฒฝ ์ด๋ฆ๊ณผ ํจ๊ป `conda activate` ๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค.
conda activate data_analysis
ํฐ๋ฏธ๋ ํ๋กฌํํธ๊ฐ ๋ณ๊ฒฝ๋์ด ํ๊ฒฝ์ด ํ์ฑ ์ํ์์ ๋ํ๋ ๋๋ค. ํ๊ฒฝ์ ๋นํ์ฑํํ๋ ค๋ฉด `conda deactivate` ๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค.
conda deactivate
ํจํค์ง ์ค์น
ํ์ฑ ํ๊ฒฝ์ ํจํค์ง๋ฅผ ์ค์นํ๋ ค๋ฉด `conda install` ๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค. ํ ๋ฒ์ ์ฌ๋ฌ ํจํค์ง๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
conda install numpy pandas matplotlib seaborn
Conda๋ ์์กด์ฑ์ ํด๊ฒฐํ๊ณ ์ง์ ๋ ํจํค์ง์ ํด๋น ์์กด์ฑ์ ์ค์นํฉ๋๋ค.
ํน์ ์ฑ๋์์ ํจํค์ง๋ฅผ ์ค์นํ ์๋ ์์ต๋๋ค. Conda ์ฑ๋์ ํจํค์ง๊ฐ ์ ์ฅ๋๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋๋ค. ๊ธฐ๋ณธ ์ฑ๋์ "defaults"์ด์ง๋ง ๋ ๊ด๋ฒ์ํ ํจํค์ง๋ฅผ ์ ๊ณตํ๋ "conda-forge"์ ๊ฐ์ ๋ค๋ฅธ ์ฑ๋์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํน์ ์ฑ๋์์ ํจํค์ง๋ฅผ ์ค์นํ๋ ค๋ฉด `-c` ํ๋๊ทธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
conda install -c conda-forge r-base r-essentials
์ด ๋ช ๋ น์ R ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํ์ R ํจํค์ง๋ฅผ conda-forge ์ฑ๋์์ ์ค์นํฉ๋๋ค. ์ด๋ conda-forge์ ๊ธฐ๋ณธ ์ฑ๋์์ ์ฐพ์ ์ ์๋ ์ต์ ๋๋ ์ ๋ฌธ ํจํค์ง๊ฐ ๋ ๋ง์ด ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์ ํนํ ์ ์ฉํฉ๋๋ค.
์ค์น๋ ํจํค์ง ๋์ด
ํ์ฑ ํ๊ฒฝ์ ์ค์น๋ ๋ชจ๋ ํจํค์ง ๋ชฉ๋ก์ ๋ณด๋ ค๋ฉด `conda list` ๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค.
conda list
๊ทธ๋ฌ๋ฉด ์ค์น๋ ํจํค์ง, ๋ฒ์ ๋ฐ ์ค์น๋ ์ฑ๋์ ํ๊ฐ ํ์๋ฉ๋๋ค.
ํจํค์ง ์ ๋ฐ์ดํธ
ํน์ ํจํค์ง๋ฅผ ์ ๋ฐ์ดํธํ๋ ค๋ฉด `conda update` ๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค.
conda update numpy
ํ๊ฒฝ์ ๋ชจ๋ ํจํค์ง๋ฅผ ์ ๋ฐ์ดํธํ๋ ค๋ฉด `--all` ํ๋๊ทธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
conda update --all
๋ฒ๊ทธ ์์ , ์ฑ๋ฅ ๊ฐ์ ๋ฐ ์๋ก์ด ๊ธฐ๋ฅ์ ํ์ฉํ๊ธฐ ์ํด ํจํค์ง๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ผ๋ก ์ข์ต๋๋ค. ๊ทธ๋ฌ๋ ํจํค์ง๋ฅผ ์ ๋ฐ์ดํธํ๋ฉด ๋๋๋ก ํธํ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก ์ ๋ฐ์ดํธ ํ์๋ ํญ์ ์ฝ๋๋ฅผ ํ ์คํธํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
ํ๊ฒฝ ๊ณต์ ๋ฐ ์ฌํ
ํ๊ฒฝ ๋ด๋ณด๋ด๊ธฐ
Conda์ ๊ฐ์ฅ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ ์ค ํ๋๋ ํ๊ฒฝ์ YAML ํ์ผ๋ก ๋ด๋ณด๋ผ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ด ํ์ผ์๋ ์ค์น๋ ๋ชจ๋ ํจํค์ง์ ํด๋น ๋ฒ์ ์ ๋ํ ์ ์ฒด ์ฌ์์ด ํฌํจ๋์ด ์์ด ๋ค๋ฅธ ์ฌ๋์ด ์์ ์ ์์คํ ์์ ์ ํํ ๋์ผํ ํ๊ฒฝ์ ๋ค์ ๋ง๋ค ์ ์์ต๋๋ค. ํ๊ฒฝ์ ๋ด๋ณด๋ด๋ ค๋ฉด `conda env export` ๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค.
conda env export > environment.yml
์ด ๋ช ๋ น์ ํ์ฌ ๋๋ ํฐ๋ฆฌ์ "environment.yml"์ด๋ผ๋ ํ์ผ์ ๋ง๋ญ๋๋ค. ํ์ผ์๋ ํ๊ฒฝ์ ์ด๋ฆ, ์ฌ์ฉ๋ ์ฑ๋, ์ค์น๋ ๋ชจ๋ ํจํค์ง ๋ฐ ํด๋น ๋ฒ์ ๋ชฉ๋ก์ด ํฌํจ๋ฉ๋๋ค.
`conda env export`๋ ํจํค์ง์ ์ ํํ ๋ฒ์ ์ ์บก์ฒํ์ฌ ๋นํธ ๋จ์ ์ฌํ์ฑ์ ๋ณด์ฅํ๋ค๋ ์ ์ ์ ์ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ ๋ค๋ฅธ ์ฌ๋์ด ํจํค์ง์ ์ต์ ๋ฒ์ ์ ์ฌ์ฉํ ์ ์๋๋ผ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณต์ ํ ์ ์๋๋ก ๋ณด์ฅํ๋ฏ๋ก ๊ณผํ์ ๊ฒ์ฆ์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
YAML ํ์ผ์์ ํ๊ฒฝ ๋ง๋ค๊ธฐ
YAML ํ์ผ์์ ์ ํ๊ฒฝ์ ๋ง๋ค๋ ค๋ฉด `conda env create` ๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค.
conda env create -f environment.yml
์ด ๋ช ๋ น์ YAML ํ์ผ์ ์ง์ ๋ ์ด๋ฆ์ผ๋ก ์ ํ๊ฒฝ์ ๋ง๋ค๊ณ ํ์ผ์ ๋์ด๋ ๋ชจ๋ ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ด์ ์ฒด์ ๋ ๊ธฐ์กด ํจํค์ง์ ๊ด๊ณ์์ด ์ ํ๊ฒฝ์ด ์๋ ํ๊ฒฝ๊ณผ ๋์ผํ๊ฒ ๋ฉ๋๋ค.
์ด๊ฒ์ ํ๋ ฅ์์ ํ๋ก์ ํธ๋ฅผ ๊ณต์ ํ๊ฑฐ๋ ๋ค๋ฅธ ํ๊ฒฝ์ ์ฝ๋๋ฅผ ๋ฐฐํฌํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. YAML ํ์ผ์ ์ ๊ณตํ๊ธฐ๋ง ํ๋ฉด ๋ค๋ฅธ ์ฌ๋์ด ์์ ์ ์์คํ ์์ ํ๊ฒฝ์ ์ฝ๊ฒ ๋ค์ ๋ง๋ค ์ ์์ต๋๋ค.
ํ๊ฒฝ ๋ณ์ ์ฌ์ฉ
ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ Conda ํ๊ฒฝ์ ๋์์ ์ฌ์ฉ์ ์ ์ํ ์ ์์ต๋๋ค. `conda env config vars set` ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ํ์ฑ ํ๊ฒฝ์์ `MY_VARIABLE` ํ๊ฒฝ ๋ณ์๋ฅผ "my_value"๋ก ์ค์ ํ๋ ค๋ฉด ๋ค์์ ์คํํฉ๋๋ค.
conda env config vars set MY_VARIABLE=my_value
๊ทธ๋ฐ ๋ค์ `os.environ` ์ฌ์ ์ ์ฌ์ฉํ์ฌ Python ์ฝ๋ ๋ด์์ ์ด ํ๊ฒฝ ๋ณ์์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
import os
my_variable = os.environ.get("MY_VARIABLE")
print(my_variable)
ํ๊ฒฝ ๋ณ์๋ ์คํ ์ค์ธ ํ๊ฒฝ์ ๊ธฐ๋ฐ์ผ๋ก ์ฝ๋๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ํนํ ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ, ํ ์คํธ ๋ฐ ํ๋ก๋์ ํ๊ฒฝ ๊ฐ์ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๋ฌธ์์ด, API ํค ๋๋ ๊ธฐํ ๊ตฌ์ฑ ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ์บ๋๋ค์์ ๋ฏผ๊ฐํ ์๋ฃ ๋ฐ์ดํฐ ์ธํธ๋ก ์์ ํ๋ ๋ฐ์ดํฐ ๊ณผํ ํ์ ๊ณ ๋ คํ์ญ์์ค. ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋์ ๋ณ๋๋ก API ํค ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๊ฒฉ ์ฆ๋ช ์ ์ ์ฅํ์ฌ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ๊ท์ ์ ์ค์ํ ์ ์์ต๋๋ค.
๊ณ ๊ธ Conda ์ฌ์ฉ๋ฒ
ํฅ์๋ ์ฌํ์ฑ์ ์ํด `conda-lock` ์ฌ์ฉ
`conda env export`๊ฐ ์ ์ฉํ์ง๋ง ๋ค๋ฅธ ํ๋ซํผ ๋ฐ ์ํคํ ์ฒ์์ ์ง์ ์ผ๋ก ์ฌํ ๊ฐ๋ฅํ ๋น๋๋ฅผ ๋ณด์ฅํ์ง๋ ์์ต๋๋ค. ์ด๋ Conda๊ฐ ๋์ ํ๋ซํผ์์ ํ๊ฒฝ์ ํด๊ฒฐํ๋ ๋ฐ ์์กดํ๊ธฐ ๋๋ฌธ์ด๋ฉฐ, ์ฌ์ฉ ๊ฐ๋ฅํ ํจํค์ง ๋๋ ์๋ฒ ๋์์ ๋ฏธ๋ฌํ ์ฐจ์ด๋ก ์ธํด ์ฝ๊ฐ ๋ค๋ฅธ ํจํค์ง ์ ํ์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค. `conda-lock`์ ์ ํํ ํจํค์ง์ ํด๋น ์์กด์ฑ์ ์ง์ ํ๋ ํ๋ซํผ ๋ ๋ฆฝ์ ์ ๊ธ ํ์ผ์ ๋ง๋ค์ด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ฌ ๋ค๋ฅธ ํ๊ฒฝ์์ ์ผ๊ด๋ ๋น๋๋ฅผ ๋ณด์ฅํฉ๋๋ค.
`conda-lock`์ ์ฌ์ฉํ๋ ค๋ฉด ๋จผ์ ์ค์นํด์ผ ํฉ๋๋ค.
conda install -c conda-forge conda-lock
๊ทธ๋ฐ ๋ค์ `conda-lock` ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ํ๊ฒฝ์์ ์ ๊ธ ํ์ผ์ ๋ง๋ค ์ ์์ต๋๋ค.
conda-lock
๊ทธ๋ฌ๋ฉด ํ๊ฒฝ์ ๋ํ ์ ํํ ์ฌ์์ด ํฌํจ๋ `conda-lock.yml` ํ์ผ์ด ๋ง๋ค์ด์ง๋๋ค. ์ ๊ธ ํ์ผ์์ ํ๊ฒฝ์ ๋ค์ ๋ง๋ค๋ ค๋ฉด `conda create --file conda-lock.yml` ๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ํ๋ซํผ์ ๊ด๊ณ์์ด ์ ํํ ๋์ผํ ํจํค์ง์ ์์กด์ฑ์ด ์ ๊ณต๋ฉ๋๋ค.
Conda์ Pip ํผํฉ
Conda๋ ๊ฐ๋ ฅํ ํจํค์ง ๊ด๋ฆฌ์์ด์ง๋ง ์ผ๋ถ ํจํค์ง๋ pip์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ๋์ผํ ํ๊ฒฝ ๋ด์์ Conda์ pip๋ฅผ ํผํฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Conda๋ ๋ ๋์ ์์กด์ฑ ํด๊ฒฐ ๋ฐ ์ถฉ๋ ๊ด๋ฆฌ๋ฅผ ์ ๊ณตํ๋ฏ๋ก ๊ฐ๋ฅํ ํ ๋ง์ ํจํค์ง๋ฅผ Conda๋ก ์ค์นํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ผ๋ก ์ข์ต๋๋ค.
Conda ํ๊ฒฝ์์ pip๋ก ํจํค์ง๋ฅผ ์ค์นํ๋ ค๋ฉด ๋จผ์ ํ๊ฒฝ์ ํ์ฑํํ ๋ค์ `pip install` ๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค.
conda activate myenv
pip install mypackage
ํ๊ฒฝ์ YAML ํ์ผ๋ก ๋ด๋ณด๋ผ ๋ Conda๋ pip์์ ์ค์น๋ ํจํค์ง๋ฅผ ๋ณ๋์ ์น์ ์ ์๋์ผ๋ก ํฌํจํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ค๋ฅธ ์ฌ๋์ด pip์์ ์ค์น๋ ํจํค์ง๋ฅผ ํฌํจํ์ฌ ํ๊ฒฝ์ ๋ค์ ๋ง๋ค ์ ์์ต๋๋ค.
CI/CD(์ง์์ ํตํฉ/์ง์์ ๋ฐฐํฌ)์ Conda ์ฌ์ฉ
Conda๋ CI/CD ํ์ดํ๋ผ์ธ์์ ์์กด์ฑ์ ๊ด๋ฆฌํ๋ ๋ฐ ํ์ํ ์ ํ์ ๋๋ค. Conda๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ์ ๋ํ ์ผ๊ด๋๊ณ ์ฌํ ๊ฐ๋ฅํ ๋น๋ ํ๊ฒฝ์ ๋ง๋ค ์ ์์ต๋๋ค. CI/CD ๊ตฌ์ฑ ํ์ผ์์ YAML ํ์ผ์์ Conda ํ๊ฒฝ์ ๋ง๋ค๊ณ ํ์ํ ๋ชจ๋ ์์กด์ฑ์ ์ค์นํ ๋ค์ ํ ์คํธ๋ฅผ ์คํํ๊ฑฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด CI/CD ํ๋ซํผ์ ๊ด๊ณ์์ด ์ฝ๋๊ฐ ์ผ๊ด๋ ํ๊ฒฝ์์ ๋น๋๋๊ณ ํ ์คํธ๋ฉ๋๋ค.
Conda-Forge ์ฑ๋ ํ์ฉ
Conda-Forge๋ ์ปค๋ฎค๋ํฐ ์ฃผ๋์ Conda ๋ ์ํผ ๋ชจ์์ผ๋ก, ๊ธฐ๋ณธ Anaconda ์ฑ๋์์ ์ฌ์ฉํ ์ ์๋ ์ต์ ๋ฒ์ ๊ณผ ํจํค์ง๋ฅผ ํฌํจํ์ฌ ๊ด๋ฒ์ํ ํจํค์ง๋ฅผ ์ ๊ณตํฉ๋๋ค. Conda ํ๊ฒฝ์ ๊ธฐ๋ณธ ์ฑ๋๋ก Conda-Forge๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. Conda-Forge๋ฅผ ๊ธฐ๋ณธ ์ฑ๋๋ก ์ถ๊ฐํ๋ ค๋ฉด Conda ๊ตฌ์ฑ์ ์์ ํ ์ ์์ต๋๋ค.
conda config --add channels conda-forge
conda config --set channel_priority strict
`channel_priority: strict` ์ค์ ์ Conda๊ฐ ๊ธฐ๋ณธ ์ฑ๋๋ณด๋ค Conda-Forge ์ฑ๋์ ํจํค์ง๋ฅผ ์ฐ์ ์์๋ก ์ง์ ํ์ฌ ์์กด์ฑ ์ถฉ๋ ์ํ์ ์ต์ํํ๋๋ก ํฉ๋๋ค. ์ด๋ ์ต์ฒจ๋จ ๊ณผํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ก์ธ์คํ๊ณ ๋ค๋ฅธ ํ๋ซํผ์์ ํธํ์ฑ์ ๋ณด์ฅํ๋ ๋ฐ ์ค์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ผ๋ณธ์์ ์์ฐ์ด ์ฒ๋ฆฌ ์์ ์ ์ํํ๋ ์ฐ๊ตฌํ์ ์ต์ ์ธ์ด ๋ชจ๋ธ๋ก Conda-Forge์์ ์์ฃผ ์ ๋ฐ์ดํธ๋๋ `spacy` ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. `channel_priority: strict`๋ฅผ ์ฌ์ฉํ๋ฉด ํญ์ ๊ฐ์ฅ ์ต๊ทผ์ ์ต์ ํ๋ ๋ฒ์ ์ ์ป์ ์ ์์ต๋๋ค.
Conda ํ๊ฒฝ ๊ด๋ฆฌ๋ฅผ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
- ์ค๋ช ์ ์ธ ํ๊ฒฝ ์ด๋ฆ ์ฌ์ฉ: ํ๊ฒฝ์ ๋ชฉ์ ์ ๋ช ํํ๊ฒ ๋ํ๋ด๋ ํ๊ฒฝ ์ด๋ฆ์ ์ ํํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ํ๊ฒฝ์ ๋ ์ฝ๊ฒ ๊ด๋ฆฌํ๊ณ ์ ์ง ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด "env1" ๋์ "machine_learning_project" ๋๋ "bioinformatics_analysis"๋ฅผ ์ฌ์ฉํ์ญ์์ค.
- ํ๊ฒฝ์ ์๊ฒ ์ ์ง: ํ๋ก์ ํธ์ ์ ๋์ ์ผ๋ก ํ์ํ ํจํค์ง๋ง ์ค์นํ์ญ์์ค. ์ด๋ ๊ฒ ํ๋ฉด ์์กด์ฑ ์ถฉ๋ ์ํ์ด ์ค์ด๋ค๊ณ ํ๊ฒฝ์ ๋ ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ํฌํจ๋ ๋๋ถ๋ถ์ ํจํค์ง๊ฐ ํ์ํ์ง ์์ ๊ฒฝ์ฐ Anaconda์ ๊ฐ์ ํฐ ๋ฉํ ํจํค์ง๋ฅผ ์ค์นํ์ง ๋ง์ญ์์ค.
- ์ฌํ์ฑ์ ์ํด YAML ํ์ผ ์ฌ์ฉ: ๋ค๋ฅธ ์ฌ๋์ด ํ๋ก์ ํธ๋ฅผ ์ฝ๊ฒ ์ฌํํ ์ ์๋๋ก ํญ์ ํ๊ฒฝ์ YAML ํ์ผ๋ก ๋ด๋ณด๋ด์ญ์์ค. YAML ํ์ผ์ ํ๋ก์ ํธ ๋ฆฌํฌ์งํ ๋ฆฌ์ ํฌํจํ์ญ์์ค.
- ํจํค์ง๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ์ ๋ฐ์ดํธ: ๋ฒ๊ทธ ์์ , ์ฑ๋ฅ ๊ฐ์ ๋ฐ ์๋ก์ด ๊ธฐ๋ฅ์ ํ์ฉํ๊ธฐ ์ํด ํจํค์ง๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ์ญ์์ค. ๊ทธ๋ฌ๋ ํจํค์ง๋ฅผ ์ ๋ฐ์ดํธํ๋ฉด ๋๋๋ก ํธํ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก ์ ๋ฐ์ดํธ ํ์๋ ํญ์ ์ฝ๋๋ฅผ ํ ์คํธํ์ญ์์ค.
- ํจํค์ง ๋ฒ์ ๊ณ ์ : ์ค์ํ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ํ๊ฒฝ์ด ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ผ๊ด์ฑ์ ์ ์งํ๋๋ก ํจํค์ง ๋ฒ์ ์ ๊ณ ์ ํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค. ์ด๋ ๊ฒ ํ๋ฉด ์๋ ์ ๋ฐ์ดํธ๋ก ์ธํด ๋ฐ์ํ๋ ์๊ธฐ์น ์์ ๋์์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. YAML ํ์ผ์์ ์ ํํ ๋ฒ์ ์ ์ง์ ํ ์ ์์ต๋๋ค(์: `numpy=1.23.0`).
- ๋ค๋ฅธ ํ๋ก์ ํธ์ ๋ํด ๋ณ๋์ ํ๊ฒฝ ์ฌ์ฉ: ๋จ์ผ ํ๊ฒฝ์ ๋ชจ๋ ํจํค์ง๋ฅผ ์ค์นํ์ง ๋ง์ญ์์ค. ์์กด์ฑ ์ถฉ๋์ ๋ฐฉ์งํ๊ณ ํ๋ก์ ํธ๋ฅผ ๊ฒฉ๋ฆฌ๋ ์ํ๋ก ์ ์งํ๊ธฐ ์ํด ๊ฐ ํ๋ก์ ํธ์ ๋ํด ๋ณ๋์ ํ๊ฒฝ์ ๋ง๋์ญ์์ค.
- ํ๊ฒฝ ๋ฌธ์ํ: ํ๊ฒฝ์ ๋ชฉ์ , ์ค์น๋ ํจํค์ง ๋ฐ ํ์ํ ํน์ ๊ตฌ์ฑ ๋จ๊ณ๋ฅผ ์ค๋ช ํ๋ README ํ์ผ์ ํ๋ก์ ํธ ๋ฆฌํฌ์งํ ๋ฆฌ์ ํฌํจํ์ญ์์ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ค๋ฅธ ์ฌ๋์ด ํ๊ฒฝ์ ๋ ์ฝ๊ฒ ์ดํดํ๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ํ๊ฒฝ ํ ์คํธ: ํ๊ฒฝ์ ๋ง๋ค๊ฑฐ๋ ์์ ํ ํ์๋ ์ฝ๋๊ฐ ์์๋๋ก ์๋ํ๋์ง ํญ์ ํ ์คํธํ์ญ์์ค. ์ด๋ ๊ฒ ํ๋ฉด ํธํ์ฑ ๋ฌธ์ ๋๋ ์์กด์ฑ ์ถฉ๋์ ์กฐ๊ธฐ์ ์๋ณํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ํ๊ฒฝ ์์ฑ ์๋ํ: ์คํฌ๋ฆฝํ ๋๋ ์๋ํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ๊ฒฝ์ ๋ง๋ค๊ณ ๊ด๋ฆฌํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค. ์ด๋ ๊ฒ ํ๋ฉด ์๊ฐ์ ์ ์ฝํ๊ณ ์ค๋ฅ ์ํ์ ์ค์ผ ์ ์์ต๋๋ค. `tox`์ ๊ฐ์ ๋๊ตฌ๋ ์ฌ๋ฌ Conda ํ๊ฒฝ์ ๋ํด ํจํค์ง ํ ์คํธ๋ฅผ ์๋ํํ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ธ ๋ฌธ์ ๋ฐ ๋ฌธ์ ํด๊ฒฐ
- ์์กด์ฑ ์ถฉ๋: ๋ ์ด์์ ํจํค์ง๊ฐ ๋์ผํ ์์กด์ฑ์ ํธํ๋์ง ์๋ ๋ฒ์ ์ ํ์๋ก ํ ๋ ์์กด์ฑ ์ถฉ๋์ด ๋ฐ์ํ ์ ์์ต๋๋ค. Conda๋ ์ด๋ฌํ ์ถฉ๋์ ์๋์ผ๋ก ํด๊ฒฐํ๋ ค๊ณ ์๋ํ์ง๋ง ๋๋ก๋ ์คํจํ ์ ์์ต๋๋ค. ์์กด์ฑ ์ถฉ๋์ด ๋ฐ์ํ๋ฉด ๋ค์์ ์๋ํ์ญ์์ค.
- Conda ์ ๋ฐ์ดํธ: `conda update conda`
- `--no-deps` ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์์กด์ฑ ์์ด ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค(์ฃผ์ํด์ ์ฌ์ฉ).
- YAML ํ์ผ์์ ํจํค์ง์ ๋ํ ๋ช ์์ ๋ฒ์ ์ ์ง์ ํฉ๋๋ค.
- `conda-forge` ์ฑ๋์ ์ฌ์ฉํด ๋ณด์ญ์์ค. ๋ ์ต์ ์ด๊ณ ํธํ ๊ฐ๋ฅํ ํจํค์ง๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
- ์ฒ์๋ถํฐ ์ ํ๊ฒฝ์ ๋ง๋ค๊ณ ํจํค์ง๋ฅผ ํ๋์ฉ ์ค์นํ์ฌ ์ถฉ๋์ ์์ธ์ ์๋ณํฉ๋๋ค.
- ํจํค์ง ์ค์น ์๋ ์ ํ: Conda๊ฐ ๋ณต์กํ ์์กด์ฑ ์ฒด์ธ์ ํด๊ฒฐํด์ผ ํ๊ฑฐ๋ ํจํค์ง ํฌ๊ธฐ๊ฐ ํฐ ๊ฒฝ์ฐ ํจํค์ง ์ค์น ์๋๊ฐ ๋๋ฆด ์ ์์ต๋๋ค. ๋ค์์ ์๋ํ์ญ์์ค.
- `--repodata-ttl` ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ Conda๊ฐ ํจํค์ง ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์บ์ํ๋ ์๊ฐ์ ๋๋ฆฝ๋๋ค.
- Conda๋ณด๋ค ๋น ๋ฅธ ๋์์ธ `mamba` ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. `conda install -c conda-forge mamba`๋ก ์ค์นํฉ๋๋ค.
- ๋ ๋น ๋ฅธ ์ธํฐ๋ท ์ฐ๊ฒฐ์ ์ฌ์ฉํฉ๋๋ค.
- ๊ฐ๋ฅํ๋ฉด ๋ก์ปฌ ํ์ผ์์ ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.
- ํ๊ฒฝ ํ์ฑํ ๋ฌธ์ : Conda๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋์ง ์์๊ฑฐ๋ ์
ธ ๊ตฌ์ฑ์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ํ๊ฒฝ ํ์ฑํ๊ฐ ์คํจํ ์ ์์ต๋๋ค. ๋ค์์ ์๋ํ์ญ์์ค.
- Conda๊ฐ ์์คํ ์ PATH ํ๊ฒฝ ๋ณ์์ ์ถ๊ฐ๋์๋์ง ํ์ธํฉ๋๋ค.
- `conda init
`๋ก Conda๋ฅผ ๋ค์ ์ด๊ธฐํํฉ๋๋ค. - ์ ธ ๊ตฌ์ฑ ํ์ผ์์ ์ถฉ๋ํ๋ ์ค์ ์ด ์๋์ง ํ์ธํฉ๋๋ค.
Conda์ ๋ค๋ฅธ ํ๊ฒฝ ๊ด๋ฆฌ ๋๊ตฌ(venv, Docker) ๋น๊ต
Conda๋ ๊ฐ๋ ฅํ ํ๊ฒฝ ๊ด๋ฆฌ ๋๊ตฌ์ด์ง๋ง venv ๋ฐ Docker์ ๊ฐ์ ๋ค๋ฅธ ์ธ๊ธฐ ์๋ ์ต์ ๊ณผ ์ด๋ป๊ฒ ๋น๊ต๋๋์ง ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- venv: venv๋ Python๊ณผ ํจ๊ป ์ ๊ณต๋๋ ๊ฒฝ๋ ํ๊ฒฝ ๊ด๋ฆฌ์์ ๋๋ค. ์ฃผ๋ก Python ํจํค์ง ๊ฒฉ๋ฆฌ์ ์ค์ ์ ๋๊ณ ์์ผ๋ฉฐ ๊ฐ๋จํ Python ํ๋ก์ ํธ์ ์ ํฉํฉ๋๋ค. ๊ทธ๋ฌ๋ venv๋ Conda๋งํผ ๋น Python ์์กด์ฑ์ด๋ ํ๋ซํผ ๊ฐ ํธํ์ฑ์ ์ ์ฒ๋ฆฌํ์ง ๋ชปํฉ๋๋ค.
- Docker: Docker๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํด๋น ์์กด์ฑ์ ์์ฒด ํฌํจ๋ ๋จ์๋ก ํจํค์งํ ์ ์๋ ์ปจํ ์ด๋ํ ๊ธฐ์ ์ ๋๋ค. ์ด๋ ๋์ ์์ค์ ๊ฒฉ๋ฆฌ ๋ฐ ์ฌํ์ฑ์ ์ ๊ณตํ์ง๋ง Conda ๋๋ venv๋ณด๋ค ๋ ๋ง์ ์ค๋ฒํค๋๊ฐ ํ์ํฉ๋๋ค. Docker๋ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๊ฑฐ๋ ๋ค๋ฅธ ํ๋ซํผ์์ ์ฝ๊ฒ ๊ณต์ ํ๊ณ ๋ฐฐํฌํ ์ ์๋ ์ง์ ์ผ๋ก ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์ ๋ง๋๋ ๋ฐ ์ ํฉํฉ๋๋ค.
Conda๋ ๋จ์์ฑ๊ณผ ๊ฐ๋ ฅํจ ์ฌ์ด์์ ๊ท ํ์ ์ ์ ์งํ๋ฏ๋ก ๊ด๋ฒ์ํ ๊ณผํ์ ์ปดํจํ ์์ ์ ์ ํฉํ ์ ํ์ ๋๋ค. ๋ฐ์ด๋ ์์กด์ฑ ๊ด๋ฆฌ, ํ๋ซํผ ๊ฐ ํธํ์ฑ ๋ฐ ์ฌํ์ฑ์ ์ ๊ณตํ๋ ๋์์ ๋น๊ต์ ์ฌ์ฉํ๊ธฐ ์ฝ์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ๋จํ Python ํ๋ก์ ํธ์ ๊ฒฝ์ฐ venv๋ก ์ถฉ๋ถํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ณต์กํ ๋ฐฐํฌ์ ๊ฒฝ์ฐ Docker๊ฐ ๋ ๋์ ์ต์ ์ผ ์ ์์ต๋๋ค.
์ค์ ์ฌ๋ก
๋ค์์ Conda๊ฐ ๊ณผํ์ ์ปดํจํ ์์ ์ฌ์ฉ๋๋ ์ค์ ์ฌ๋ก์ ๋๋ค.
- ์ ์ ์ฒดํ ์ฐ๊ตฌ: ์๊ตญ์ ์ ์ ์ฒดํ ์ฐ๊ตฌ์์์๋ Conda๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฌผ์ ๋ณดํ ํ์ดํ๋ผ์ธ์ ์์กด์ฑ์ ๊ด๋ฆฌํฉ๋๋ค. ๊ฐ ํ์ดํ๋ผ์ธ์ ๋ํด ๋ณ๋์ ํ๊ฒฝ์ ๋ง๋ค์ด samtools, bcftools ๋ฐ bedtools์ ๊ฐ์ ํ์ํ ๋๊ตฌ์ ์ฌ๋ฐ๋ฅธ ๋ฒ์ ์ ์ฌ์ฉํ๊ณ ์๋์ง ํ์ธํฉ๋๋ค.
- ๊ธฐํ ๋ชจ๋ธ๋ง: ๋ฏธ๊ตญ์ ๊ธฐํ ๋ชจ๋ธ๋ง ๊ทธ๋ฃน์์๋ Conda๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฎฌ๋ ์ด์ ์ ์ํ ์ฌํ ๊ฐ๋ฅํ ํ๊ฒฝ์ ๋ง๋ญ๋๋ค. ํ๊ฒฝ์ YAML ํ์ผ๋ก ๋ด๋ณด๋ด ๋ค๋ฅธ ์ฐ๊ตฌ์์ ๊ณต์ ํ์ฌ ๋ชจ๋ ์ฌ๋์ด ๋์ผํ ์ํํธ์จ์ด ์คํ์ ์ฌ์ฉํ๊ณ ์๋์ง ํ์ธํฉ๋๋ค.
- ๋จธ์ ๋ฌ๋: ์ธ๋์ ๋จธ์ ๋ฌ๋ ํ์์๋ Conda๋ฅผ ์ฌ์ฉํ์ฌ ๋ฅ ๋ฌ๋ ๋ชจ๋ธ์ ์์กด์ฑ์ ๊ด๋ฆฌํฉ๋๋ค. TensorFlow, PyTorch ๋ฐ ๊ธฐํ ๋จธ์ ๋ฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ค๋ฅธ ๋ฒ์ ๊ฐ์ ์ถฉ๋์ ๋ฐฉ์งํ๊ธฐ ์ํด ๊ฐ ๋ชจ๋ธ์ ๋ํด ๋ณ๋์ ํ๊ฒฝ์ ๋ง๋ญ๋๋ค.
- ์ ์ฝ ๊ฐ๋ฐ: ์ค์์ค์ ์ ์ฝ ํ์ฌ์์๋ Conda๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฝ ๊ฐ๋ฐ ํ๋ก์ ํธ๋ฅผ ์ํ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์ ๋ง๋ญ๋๋ค. ์ด๋ฅผ ํตํด ์ฐ๊ตฌ์ ๋ฌด๊ฒฐ์ฑ ๋ฐ ์ฌํ์ฑ์ ์ ์งํ๋ ๋์์ ๊ท์ ์๊ตฌ ์ฌํญ์ ์ค์ํ ์ ์์ต๋๋ค.
- ์ฒ๋ฌธํ: ์ฒ๋ฌธํ์ ๊ตญ์ ํ๋ ฅ์ฒด๋ Conda๋ฅผ ์ฌ์ฉํ์ฌ ์ ์์ค ์น ์ฐ์ฃผ ๋ง์๊ฒฝ์์ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๊ธฐ ์ํ ์ํํธ์จ์ด ์์กด์ฑ์ ๊ด๋ฆฌํฉ๋๋ค. ๋ฐ์ดํฐ ์ถ์ ํ์ดํ๋ผ์ธ์ ๋ณต์ก์ฑ์ผ๋ก ์ธํด ์ ํํ ๋ฒ์ ์ ์ด๊ฐ ํ์ํ๋ฉฐ Conda๋ ์ด๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ง์ํฉ๋๋ค.
๊ฒฐ๋ก
Conda๋ ๊ณ์ฐ ํ๊ฒฝ์์ ์์ ํ๋ ๋ชจ๋ ๊ณผํ์, ์ฐ๊ตฌ์ ๋๋ ๋ฐ์ดํฐ ์ ๋ฌธ๊ฐ์๊ฒ ํ์์ ์ธ ๋๊ตฌ์ ๋๋ค. ์์กด์ฑ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํ๊ณ ์ฌํ์ฑ์ ๋์ด๋ฉฐ ํ์ ์ ์ด์งํฉ๋๋ค. Conda๋ฅผ ๋ง์คํฐํ๋ฉด ์์ฐ์ฑ์ ํฌ๊ฒ ํฅ์์ํค๊ณ ๊ณผํ์ ๋ ธ๋ ฅ์ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ ์ ์์ต๋๋ค. ํ๊ฒฝ ์์์ ์ ์ค์ฒํ๊ณ , ํ๊ฒฝ์ ์ง์ค์ ์ผ๋ก ์ ์งํ๊ณ , ๊ณต์ ๋ฐ ๋ณต์ ๋ฅผ ์ํด YAML ํ์ผ์ ๊ธฐ๋ฅ์ ํ์ฉํ์ญ์์ค. ์ด๋ฌํ ๋ฐฉ๋ฒ์ด ๋ง๋ จ๋๋ฉด Conda๋ ๊ณผํ์ ์ปดํจํ ํดํท์์ ๋งค์ฐ ๊ท์คํ ์์ฐ์ด ๋ ๊ฒ์ ๋๋ค.